package cn.tedu.flower.manage.content.service;

import cn.tedu.flower.manage.common.pojo.vo.PageData;
import cn.tedu.flower.manage.common.security.CurrentPrincipal;
import cn.tedu.flower.manage.content.pojo.entity.Fadeback;
import cn.tedu.flower.manage.content.pojo.param.FadebackAddNewParam;
import cn.tedu.flower.manage.content.pojo.param.FadebackUpdateParam;
import cn.tedu.flower.manage.content.pojo.vo.FadebackListItemVO;
import cn.tedu.flower.manage.content.pojo.vo.FadebackStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.Collection;

@Transactional
public interface IFadebackService {
    /**
     * 添加反馈信息
     * @param currentPrincipal 当事人
     * @param remoteAddr ip地址
     * @param fadebackAddNewParam 新的反馈信息数据
     * @return 受影响的条数
     */
    void addNew(CurrentPrincipal currentPrincipal, String remoteAddr, FadebackAddNewParam fadebackAddNewParam);
    /**
     * 根据id删除反馈信息
     * @param id 反馈信息的id
     * @return 受影响的行数
     */
    void delete(Long id);

    /**
     * 根据id修改反馈信息
     * @param fadebackUpdateParam 包含id和修改反馈信息的对象
     * @return 受影响的行数
     */
    void update(FadebackUpdateParam fadebackUpdateParam);

    /**
     * 根据id查询反馈信息详情
     * @param id 反馈信息的id
     * @return 反馈信息详情
     */
    FadebackStandardVO selectById(Long id);
    /**
     * 反馈信息详情
     * @param pageNum 页码
     * @return 反馈信息列表
     */
    PageData<FadebackListItemVO> selectAll(Integer pageNum);

    /**
     * 反馈信息详情
     * @param pageNum 页码
     * @param pageSize 每页记录数
     * @return 反馈信息列表
     */
    PageData<FadebackListItemVO> selectAll(Integer pageNum, Integer pageSize);
}
